package com.zdf.license.web.listener;

import com.zdf.license.verify.listener.ACustomVerifyListener;
import com.zdf.license.verify.listener.ParamType;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 当类注入到springboot中时候，初始化时自动将实例保存在了父类，
 * 每次启动校验父类都会调用 verify(LicenseExtraParam licenseExtra)
 */
@Component
public class Server1TimeVerifyListener extends ACustomVerifyListener<Date> {

    /**
     * ParamType 在生成证书时候非常有用
     */
    @Override
    public ParamType paramType() {
        return new ParamType("Server1Time", "服务1有效时间", Date.class);
    }

    /**
     * 当前时间必须在证书填充的自定义时间参数之前，否则返回false
     */
    @Override
    protected boolean verify(Date custom, Date test) {
        return test.before(custom);
    }

    /**
     * 类型转换比较特殊，需要自己定义类型转换
     */
    @Override
    protected Date typeConversion(Object custom) throws Exception{
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.parse(custom.toString());
    }
}
